home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / txf / src / txflcx.c < prev    next >
C/C++ Source or Header  |  1993-07-08  |  2KB  |  129 lines

  1. /***************
  2. *
  3. * g:\exe\txf\src\txflcx.c
  4. */
  5. #include "txf.h"
  6.  
  7. /**************** in line LCX module ************************/
  8.  
  9. char *get_filename(char *wildcard)
  10. {
  11.     static struct find_t filedata;
  12.     static char wc[76] = "";
  13.     static char fullpath[80];
  14.     char *npos;
  15.     int ret;
  16.  
  17.     if (strcmp(wc, wildcard) != 0) {
  18.         strcpy(wc, wildcard);
  19.         ret = _dos_findfirst(wc, _A_ARCH | _A_NORMAL | _A_RDONLY, &filedata);
  20.     }
  21.     else {
  22.         ret = _dos_findnext(&filedata);
  23.     }
  24.  
  25.     if (ret == 0) {
  26.         strcpy(fullpath, wildcard);
  27.         if ((npos = jstrrchr(fullpath, '\\')) != NULL) {
  28.             strcpy(npos + 1, filedata.name);
  29.         }
  30.         else if ((npos = jstrchr(fullpath, ':')) != NULL) {
  31.             strcpy(npos + 1, filedata.name);
  32.         }
  33.         else {
  34.             strcpy(fullpath, filedata.name);
  35.         }
  36.         if (strstr(fullpath, ".BAK") != NULL) {
  37.             return (get_filename(wildcard));
  38.         }
  39.         return (fullpath);
  40.     }
  41.     else {
  42.         return (NULL);
  43.     }
  44. }
  45.  
  46. void lcx (char *lcxinputfile)
  47. {
  48.     int chr = NUL,type = CT_ANK;
  49.     long int size = 0, clum = 0, ret = 0, retx = 0;
  50.  
  51.     if (lcxinputfile != NULL) {
  52.         input = fopen(lcxinputfile, "rb");
  53.     }
  54.     else {
  55.         input = stdin;
  56.     }
  57.     if (input == NULL) {
  58.         fprintf(stderr, "Error:cannot open input file\n");
  59.         exit(1);
  60.     }
  61.  
  62.     while(chr != EOF) {
  63.         chr = getc(input);
  64.         type = chkctype(chr, type);
  65.         size++;
  66.         clum++;
  67.         if (chr == 0x0a) {
  68.             ret++;
  69.             retx++;
  70.             clum = 0;
  71.         }
  72.         if (((clum == 80) && (type == CT_KJ1)) || (clum > 80)) {
  73.             clum = 0;
  74.             retx++;
  75.         }
  76.     }
  77.     if (input == stdin) {
  78.         size += ret;
  79.     }
  80.     size--;
  81.  
  82.     printf("%10ld%10ld%10ld ", ret, size, retx);
  83.     if (*lcxinputfile != NUL) {
  84.         printf("%s", lcxinputfile);
  85.     }
  86.  
  87.     totalret += ret;
  88.     totalretx += retx;
  89.     totalsize += size;
  90.     putc(RET, stdout);
  91.  
  92.     fclose(input);
  93.  
  94. }
  95.  
  96. void lcxdriver(char **param)
  97. {
  98.     int fileno = 0,i;
  99.     char *filename;
  100.  
  101.     fprintf(stderr, "TXF inline module LCX Ver1.20\n     Lines     Bytes ViewLines Filename\n");
  102.  
  103.     if (*param == NUL) {
  104.         fileno++;
  105.         lcx(NULL);
  106.     }
  107.     else {
  108.         for (i = 0; param[i] != NULL; i++) {
  109.             do {
  110.                 filename = get_filename(param[i]);
  111.                 if (filename != NULL) {
  112.                     lcx(filename);
  113.                     fileno++;
  114.                 }
  115.             } while(filename != NULL);
  116.         }
  117.     }
  118.     if (fileno > 1) {
  119.         fprintf(stderr, "----------+---------+---------+------------------------\n");
  120.         printf("%10ld%10ld%10ld TOTAL\n",
  121.             totalret, totalsize, totalretx);
  122.     }
  123.     exit(0);
  124.  
  125. }
  126.  
  127. /***************end of LCX*********************/
  128.  
  129.